package com.ddzj.scaffold.vo;

import com.ddzj.scaffold.common.AjaxResultStatus;
import com.ddzj.scaffold.enums.AjaxResultStatusEnum;

import java.io.Serializable;

public class AjaxResultVo implements Serializable {
    //状态
    private Integer status;
    //信息
    private String message;
    //数据体
    private Object data;

    /**
     * 构造成功数据结构
     * @return
     */
    public static AjaxResultVo ok(){
        AjaxResultVo ajaxResultVo = new AjaxResultVo();
        buildAjaxResultVo(ajaxResultVo, AjaxResultStatusEnum.S_200);
        return ajaxResultVo;
    }

    /**
     * 构造成功数据结构
     * @param data
     * @return
     */
    public static AjaxResultVo ok(Object data){
        AjaxResultVo ajaxResultVo = new AjaxResultVo();
        ajaxResultVo.setStatus(AjaxResultStatusEnum.S_200.getCode());
        ajaxResultVo.setData(data);
        return ajaxResultVo;
    }

    /**
     * 自定义返回失败消息
     * @param msg
     * @return
     */
    public static AjaxResultVo errorMsg(String msg){
        AjaxResultVo ajaxResultVo = new AjaxResultVo();
        ajaxResultVo.setStatus(AjaxResultStatusEnum.S_ERROR.getCode());
        ajaxResultVo.setMessage(msg);
        return ajaxResultVo;
    }

    public static void buildAjaxResultVo(AjaxResultVo vo, AjaxResultStatusEnum statusEnum){
        vo.setStatus(statusEnum.getCode());
        vo.setMessage(statusEnum.getMessage());
    }

    /**
     * 自定义返回失败编码及消息
     * @param statusEnum
     * @return
     */
    public static AjaxResultVo error(AjaxResultStatusEnum statusEnum){
        AjaxResultVo ajaxResultVo = new AjaxResultVo();
        buildAjaxResultVo(ajaxResultVo, statusEnum);
        return ajaxResultVo;
    }

    /**
     * 自定义返回失败编码及消息
     * @param statusEnum
     * @param msg
     * @return
     */
    public static AjaxResultVo error(AjaxResultStatusEnum statusEnum, String msg){
        AjaxResultVo ajaxResultVo = new AjaxResultVo();
        buildAjaxResultVo(ajaxResultVo, statusEnum);
        ajaxResultVo.setMessage(msg);
        return ajaxResultVo;
    }

    /**
     * 获取 信息
     *
     * @return message 信息
     */
    public String getMessage() {
        return this.message;
    }

    /**
     * 设置 信息
     *
     * @param message 信息
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 获取 数据体
     *
     * @return data 数据体
     */
    public Object getData() {
        return this.data;
    }

    /**
     * 设置 数据体
     *
     * @param data 数据体
     */
    public void setData(Object data) {
        this.data = data;
    }

    /**
     * 获取 状态
     *
     * @return status 状态
     */
    public Integer getStatus() {
        return this.status;
    }

    /**
     * 设置 状态
     *
     * @param status 状态
     */
    public void setStatus(Integer status) {
        this.status = status;
    }
}
